#pragma once
#include "DataElement.h"

/************************************************************************/
/* vigeneral_InBuffer_parser                                            */
/************************************************************************/
class vigeneral_InBuffer_parser : public general_InOutBuffer_parser
{
public:
	vigeneral_InBuffer_parser(void){};
	virtual ~vigeneral_InBuffer_parser(void){};
public:
	virtual int Getvalue(const char* IN pBase,std::string&){return RETURN_STATUS::RETURN_ERROR; };
	/* pStart: the first byte address of current In Buffer
	 * pEnd:
	 *    [IN]: the last byte address + 1 of current buffer
	 *	  [OUT]: the last byte address + 1 of current func InBuffer
	 * [RETURN]:
	 *        0:
	 *       >0: 
	 */
	virtual int MoveToEnd(const char* IN pStart, char*& INOUT pEnd);
};

/************************************************************************/
/* pBase is the start address of current InBuffer,                      */
/* i.e. the blk header is NOT in the buffer                             */
/*                                                                      */
/************************************************************************/
class viwrtbuf_parser:public FuncData_ParserBase
{
public:
	viwrtbuf_parser(){};
	virtual ~viwrtbuf_parser(){};
public:
	int Getvalue(const char* IN pBase,std::string&);

};


/************************************************************************/
/* pBase is the start address of current OutBuffer,                      */
/*                                                                      */
/************************************************************************/
class virdbuf_parser:public FuncData_ParserBase
{
public:
	virdbuf_parser(){};
	virtual ~virdbuf_parser(){};
public:
	int Getvalue(const char* IN pBase,std::string&);

};